package com.zenithmind.chat.pojo.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.zenithmind.common.base.BaseEntity;
import com.zenithmind.chat.enums.GroupType;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 群组关联实体类 - 遵循单一职责原则
 * 专门负责群组与外部资源的关联关系
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_group_association")
public class ChatGroupAssociation extends BaseEntity {

    /**
     * 群组ID
     */
    private String groupId;

    /**
     * 关联类型
     */
    private GroupType associationType;

    /**
     * 关联资源ID
     */
    private String resourceId;

    /**
     * 关联资源名称
     */
    private String resourceName;

    /**
     * 关联资源描述
     */
    private String resourceDescription;

    /**
     * 关联状态（0-无效，1-有效）
     */
    private Integer status;

    /**
     * 关联创建者ID
     */
    private String creatorId;

    /**
     * 扩展信息（JSON格式）
     */
    private String extraInfo;

    /**
     * 检查是否为课程关联
     * 
     * @return 是否为课程关联
     */
    public boolean isCourseAssociation() {
        return associationType != null && associationType.isCourseRelated();
    }

    /**
     * 检查是否为项目关联
     * 
     * @return 是否为项目关联
     */
    public boolean isProjectAssociation() {
        return associationType != null && associationType.isWorkRelated();
    }

    /**
     * 检查关联是否有效
     * 
     * @return 是否有效
     */
    public boolean isValid() {
        return status != null && status == 1;
    }
}
